/*Системные классы
 * _win_wrapper - обертка будет просто появляться и исчезать
 * _win_block - блок окна будет плавно появляться после обертки  и плавно изчезать перед оберткой
 * _win_close - при клике окно закроется
 * _win_title - заголовок окна
 * _win_content - контентная часть 
 * */
function ModalWin(prop){
	//массив модальных окон
	this.wins=new Array();
	//количество модальных окон
	this.win_count=0;
	//объект прототип
	this.win_prot=false;
	this.last_win_num=false;
	//Инициализация окон
	this.init=function(prop,ind)
	{
		/*Если не передан индекс генерируется*/
		if(!ind)
			ind=this.win_count++;
		//Сохраняю настройки текущего окна
		this.wins[ind]=$.extend({				
				'height' : 'auto',
				'width' : '500px',
				'title':'',
				'cont':'',
				'delete_on_close':false,
				'win_obj':false,
				'close_on':'',
				't_class':''
			},prop);
		return ind; 
	};
	//Получение объекта прототипа
	this.get_prot=function()
	{	
		if(!this.win_prot)
			this.win_prot=$('._win_wrapper').prepend($('<div class="_win_close"></div>').css({'position':'fixed','left':'0', 'top':'0', 'width':'100%','height':'100%'}));			
		return this.win_prot;
	};
	
	//Показать окно
	this.show=function (num)
	{
		this.close();
		//Если это первый запуск то клонирую прототип
		if(!this.wins[num].win_obj)
		{	
			prop=this.wins[num];
			//Сохраняю ссылку на клон
			this.wins[num].win_obj=this.get_prot().clone().addClass(prop.t_class)
				.find('._win_block').css({'position':'fixed','width':prop.width,'height':prop.height})
					.find('._win_title').html(prop.title).end()
					.find('._win_content').html(prop.cont).end()
				.end().appendTo('body')
				.find('._win_wrapper,._win_close').click(function(){
					dee_modal_win.close();
				}).end().attr('modal_win_index',num);
			win=this.wins[num].win_obj.show().find('._win_block');			
			win.css({'left':'50%','top':'50%','marginLeft':'-'+Math.floor(win.outerWidth(true)/2)+'px','marginTop':'-'+Math.floor(win.outerHeight(true)/2)+'px','display':'none'});
		} 
		//Показываю окно
		this.wins[num].win_obj.show().find('._win_block').fadeIn();
		this.last_win_num=num;
		return this.wins[num].win_obj;
	};
	/*Закрыть последнее открытое окно*/
	this.close=function()
	{
		if(this.last_win_num===false)return;
		this.wins[this.last_win_num].win_obj.find('._win_block').hide().end().hide();
		if(this.wins[this.last_win_num].delete_on_close)this.wins[this.last_win_num].win_obj.remove();
		this.last_win_num=false;
	};
}
//объект - хранилище окон
var dee_modal_win=false;
(function($){
	//Функция инициализации
	dee_modal_win=new ModalWin();
	$.fn.modal_win = function(prop,immediately)
	{	
		if(immediately)//Показываю окно сразу после загрузки страницы
			return dee_modal_win.show(dee_modal_win.init(prop));
		else//Ставлю событие на переданный объект
		{	
			$(this).attr('w_index',dee_modal_win.init(prop));		
			return this.click(function(e){
				dee_modal_win.show($(this).attr('w_index'));
			});
		}				
		return this;
	};
})(jQuery);